package com.zw.mes.module.prodtaskmanager.controller;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import com.zw.mes.base.BaseController;
import com.zw.mes.common.JsonResult;
import com.zw.mes.entity.technology.MakeResult;
import com.zw.mes.module.prodtaskmanager.entity.*;
import com.zw.mes.module.prodtaskmanager.model.*;
import com.zw.mes.module.prodtaskmanager.service.ProdTaskService;
import com.zw.mes.module.tecard.service.TecardService;
import com.zw.mes.util.IpUtil;
import com.zw.mes.util.ShiroUtils;
import org.apache.shiro.authz.annotation.Logical;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.apache.xmlbeans.impl.xb.xsdschema.Public;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.text.SimpleDateFormat;
import java.util.*;

/**
 * @author 徐一贺
 * @className ProdTaskController
 * @description 生产任务排产控制层
 * @date 2021/1/11 16:01
 * @versron ver 1.0
 */
@Controller
@RequestMapping("/task")
public class ProdTaskController extends BaseController {
    @Autowired
    private ProdTaskService prodTaskService;
    @Autowired
    private TecardService tecardService;

    /**
     * schedulingPage 跳转到生产令排产页
     *
     * @param
     * @return java.lang.String
     * @author 徐一贺
     * @date 2021/1/15 11:24
     */
    @GetMapping("/scheduling")
    @RequiresPermissions("pro:equipment:view")
    public String schedulingPage() {
        return "prodTaskManager/scheduling/page";
    }

    /**
     * commonPage 跳转到普通任务池
     *
     * @param
     * @return java.lang.String
     * @author 徐一贺
     * @date 2021/1/29 16:16
     */
    @GetMapping("/common")
    @RequiresPermissions("pro:other:view")
    public String commonPage() {
        return "prodTaskManager/common/page";
    }

    /**
     * 跳转到厂级计划编辑与反馈页面
     *
     * @param prodNo
     * @param model
     * @return
     */
    @GetMapping("/gotoFactoryPlanListPage/{prodNo}")
    @RequiresPermissions("pro:facPlan:edit")
    public String gotoFactoryPlanListPage(@PathVariable("prodNo") String prodNo, Model model) {
        ProdOrdModel prodOrdModel = prodTaskService.getProdOrdByPropProdNo(prodNo);
        model.addAttribute("prodOrd", prodOrdModel);
        model.addAttribute(
                "project", prodTaskService.getVwProjectByProCode(prodOrdModel.getProdProCod()));
        SysDeptModel deptModel =
                prodTaskService.getSysDeptByPrimaryKey(ShiroUtils.getUser().getDeptId());
        model.addAttribute("dept", deptModel);
        model.addAttribute("user", ShiroUtils.getUser());
        return "prodTaskManager/factoryPlanEditAndReturn/page";
    }

    /**
     * @methodName: gotoReturnAndTaskEditPage
     * @description: 跳转到设备类反馈和任五状态编辑页
     * @param: prodNo
     * @param: model
     * @return： java.lang.String
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣，盖世奇
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/6 8:58
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @GetMapping("/gotoReturnAndTaskEditPage/{prodNo}")
    @RequiresPermissions("pro:retTask:edit")
    public String gotoReturnAndTaskEditPage(@PathVariable("prodNo") String prodNo, Model model) {
        ProdOrdModel prodOrdModel = prodTaskService.getProdOrdByPropProdNo(prodNo);
        model.addAttribute("prodOrd", prodOrdModel);
        model.addAttribute("project", prodTaskService.getVwProjectByProCode(prodOrdModel.getProdProCod()));
        model.addAttribute("prodPla", prodTaskService.getProdPlaByPropProdNo(prodOrdModel.getProdNo()));
        SysDeptModel deptModel = prodTaskService.getSysDeptByPrimaryKey(ShiroUtils.getUser().getDeptId());
        model.addAttribute("dept", deptModel);
        model.addAttribute("user", ShiroUtils.getUser());
        return "prodTaskManager/scheduling/returnAndTaskEdit/page";
    }

    /**
     * @methodName: gotoCommonPlanListPage
     * @description: 跳转到其他类计划反馈编辑页面
     * @param: prodNo
     * @param: model
     * @return： java.lang.String
     * @exception：
     * @author： 徐一贺
     * @date： 2021/3/25 19:22
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @GetMapping("/gotoCommonPlanListPage/{prodNo}")
    @RequiresPermissions("pro:otherRet:edit")
    public String gotoCommonPlanListPage(@PathVariable("prodNo") String prodNo, Model model) {
        ProdOrdModel prodOrd = prodTaskService.getProdOrdByPropProdNo(prodNo);
        model.addAttribute("prodOrd", prodOrd);
        model.addAttribute("tableItem", prodTaskService.findTotalDispatchPlanItem());
        ProdPla prodPla = prodTaskService.getProdPlaByPropProdNo(prodOrd.getProdNo());
        if (prodPla != null) {
            List<ProdPlaDet> prodPlaDetList =
                    prodTaskService.findProdPlaDetListByPrpdPropId(prodPla.getPropId());
            model.addAttribute("prodPlaDetList", prodPlaDetList);
        }
        model.addAttribute("fou", ShiroUtils.getUser().getName());
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
        model.addAttribute("creDat", formatter.format(new Date()));
        model.addAttribute("deptList", prodTaskService.findDeptList());
        return "prodTaskManager/common/editReturn/page";
    }

    /**
     * factoryPlanEditAndReturnPage 跳转到生产计划编辑与反馈页面
     *
     * @param
     * @return java.lang.String
     * @author 徐一贺
     * @date 2021/2/1 13:56
     */
    @GetMapping("/factoryPlanEditAndReturn")
    @RequiresPermissions("pro:productPlan:view")
    public String factoryPlanEditAndReturnPage() {
        return "prodTaskManager/factoryPlanEditAndReturn/page";
    }

    /**
     * factoryPlanEditAndReturnLoadProdList 加载审核通过的生产令列表
     *
     * @param
     * @return com.zw.mes.common.JsonResult
     * @author 徐一贺
     * @date 2021/2/1 16:28
     */
    @ResponseBody
    @PostMapping("/factoryPlanEditAndReturn/loadProdList")
    @RequiresPermissions("pro:productPlan:edit")
    public JsonResult factoryPlanEditAndReturnLoadProdList() {
        return success().setData(prodTaskService.factoryPlanEditAndReturnLoadProdList());
    }

    /**
     * auditPage 跳转到总调计划科级审核页面
     *
     * @return java.lang.String
     * @author 徐一贺
     * @date 2021/1/27 9:03
     */
    @GetMapping("/audit")
    @RequiresPermissions("pro:proPlanCheck:view")
    public String auditPage() {
        return "prodTaskManager/audit/page";
    }

    /**
     * auditPage 跳转到总调计划部级审核页面
     *
     * @return java.lang.String
     * @author 徐一贺
     * @date 2021/1/27 9:03
     */
    @GetMapping("/ministerialAudit")
    @RequiresPermissions("pro:proMinisterialPlanCheck:view")
    public String ministerialAuditPage() {
        return "prodTaskManager/ministerialAudit/page";
    }

    /**
     * auditPage 跳转到排产记录变更记录页面
     *
     * @return java.lang.String
     * @author 徐一贺
     * @date 2021/1/27 9:03
     */
    @GetMapping("/changeQuery")
    @RequiresPermissions("pro:proPlanChange:view")
    public String changeQueryPage(Model model) {
        // 获取计划类别
        model.addAttribute("basePlanList", prodTaskService.findBasePlanOnlyList());
        return "prodTaskManager/changeQuery/page";
    }

    /**
     * schedulingList 获取排产任务池页的表格数据
     *
     * @param param 检索条件
     * @return com.zw.mes.common.JsonResult
     * @author 徐一贺
     * @date 2021/1/15 12:43
     */
    @ResponseBody
    @PostMapping("/scheduling/list")
    @RequiresPermissions("pro:equipment:view")
    public JsonResult schedulingList(ProdPlaModel param) {
        startPage();
        return jsonResult(prodTaskService.schedulingList(param));
    }

    /**
     * commonList 获取普通任务池页的表格数据
     *
     * @param param 检索条件
     * @return com.zw.mes.common.JsonResult
     * @author 徐一贺
     * @date 2021/1/29 16:34
     */
    @ResponseBody
    @PostMapping("/common/list")
    @RequiresPermissions("pro:other:view")
    public JsonResult commonList(ProdPlaModel param) {
        startPage();
        return jsonResult(prodTaskService.commonList(param));
    }

    /**
     * saveSchedulingPlan 保存设备类生产令排产计划
     *
     * @param prodNo           生产令
     * @param prodPlanListJson 排产计划JSON串
     * @return com.zw.mes.common.JsonResult
     * @author 徐一贺
     * @date 2021/1/15 16:36
     */
    @ResponseBody
    @PostMapping("/scheduling/saveSchedulingPlan")
    @RequiresPermissions("pro:equipment:commit")
    public JsonResult saveSchedulingPlan(
            String prodNo, String prodPlanListJson, HttpServletRequest httpServletRequest) {
        String clientIp = IpUtil.getIpAddr(httpServletRequest);
        Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
        List<ProdPlaDetModel> prodPlaDetList =
                gson.fromJson(prodPlanListJson, new TypeToken<List<ProdPlaDetModel>>() {
                }.getType());
        for (int i = 0; i < prodPlaDetList.size(); i++) {
            prodPlaDetList.get(i).setPrpcIp(clientIp);
        }
        return prodTaskService.saveSchedulingPla(prodNo, prodPlaDetList);
    }



    /**
     * 普通计划变更
     *
     * @param prodNo
     * @param prodPlanListJson
     * @param delPrpdIdArray
     * @param httpServletRequest
     * @return
     */
    @ResponseBody
    @PostMapping("/scheduling/saveChangeCommonPlan")
    @RequiresPermissions("pro:other:edit")
    public JsonResult saveChangeCommonPlan(
            String prodNo, String prodPlanListJson, Integer[] delPrpdIdArray, HttpServletRequest httpServletRequest) {
        String clientIp = IpUtil.getIpAddr(httpServletRequest);
        Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
        List<ProdPlaDetModel> prodPlaDetList =
                gson.fromJson(prodPlanListJson, new TypeToken<List<ProdPlaDetModel>>() {
                }.getType());
        for (int i = 0; i < prodPlaDetList.size(); i++) {
            prodPlaDetList.get(i).setPrpcIp(clientIp);
        }
        return prodTaskService.saveChangeCommonPlan(prodNo, prodPlaDetList, delPrpdIdArray);
    }

    /**
     * commonSaveSchedulingPlan 保存其他类产令排产计划
     *
     * @param prodNo             生产令
     * @param prodPlanListJson   排产计划JSON串
     * @param delPrpdIdArrayJson 删除的排产计划JSON串
     * @return com.zw.mes.common.JsonResult
     * @author 徐一贺
     * @date 2021/2/1 9:52
     */
    @ResponseBody
    @PostMapping("/common/saveSchedulingPlan")
    @RequiresPermissions("pro:other:edit")
    public JsonResult commonSaveSchedulingPlan(
            String prodNo,
            String prodPlanListJson,
            String delPrpdIdArrayJson,
            HttpServletRequest httpServletRequest) {
        Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
        String clientIp = IpUtil.getIpAddr(httpServletRequest);
        List<ProdPlaDetModel> prodPlaDetList =
                gson.fromJson(prodPlanListJson, new TypeToken<List<ProdPlaDetModel>>() {
                }.getType());
        List<Integer> delPrpdIdList =
                gson.fromJson(delPrpdIdArrayJson, new TypeToken<List<Integer>>() {
                }.getType());
        for (int i = 0; i < prodPlaDetList.size(); i++) {
            prodPlaDetList.get(i).setPrpcIp(clientIp);
        }
        return prodTaskService.commonSaveSchedulingPlan(prodNo, prodPlaDetList, delPrpdIdList);
    }

    /**
     * commonSaveSchedulingPlanAndComplete 排产完成
     *
     * @param prodNo             生产令
     * @param prodPlanListJson   排产计划JSON串
     * @param delPrpdIdArrayJson 删除的排产计划JSON串
     * @return com.zw.mes.common.JsonResult
     * @author 徐一贺
     * @date 2021/2/1 12:59
     */
    @ResponseBody
    @PostMapping("/common/saveSchedulingPlanAndComplete")
    @RequiresPermissions("pro:other:edit")
    public JsonResult commonSaveSchedulingPlanAndComplete(
            String prodNo,
            String prodPlanListJson,
            String delPrpdIdArrayJson,
            HttpServletRequest httpServletRequest) {
        Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
        String clientIp = IpUtil.getIpAddr(httpServletRequest);
        List<ProdPlaDetModel> prodPlaDetList = new ArrayList<>();
        if (!prodPlanListJson.equals("[[, ]]")) {
            prodPlaDetList =
                    gson.fromJson(prodPlanListJson, new TypeToken<List<ProdPlaDetModel>>() {
                    }.getType());
        }
        List<Integer> delPrpdIdList = new ArrayList<>();
        if (!delPrpdIdArrayJson.equals("[[, ]]")) {
            delPrpdIdList =
                    gson.fromJson(delPrpdIdArrayJson, new TypeToken<List<Integer>>() {
                    }.getType());
        }
        for (int i = 0; i < prodPlaDetList.size(); i++) {
            prodPlaDetList.get(i).setPrpcIp(clientIp);
        }
        if (prodPlaDetList.size() > 0) {
            JsonResult jsonResult =
                    prodTaskService.commonSaveSchedulingPlan(prodNo, prodPlaDetList, delPrpdIdList);
            if (jsonResult.getType().getCode() == 200) {
                return prodTaskService.updateProdPlaPropIsSchByPropProdNo(prodNo, (byte) 1);
            } else {
                return jsonResult;
            }
        } else {
            return error("尊敬的用户，请添加排产计划！");
        }
    }

    /**
     * schedulingLoadDesignInfo 根据生产令获取该项目设计完成时间
     *
     * @param prodNo 生产令
     * @return com.zw.mes.common.JsonResult
     * @author 徐一贺
     * @date 2021/1/16 11:09
     */
    @ResponseBody
    @PostMapping("/scheduling/loadDesignInfo")
    @RequiresPermissions("pro:equipment:edit")
    public JsonResult schedulingLoadDesignInfo(String prodNo) {
        return success().setData(prodTaskService.schedulingLoadDesignInfo(prodNo));
    }

    /**
     * schedulingEdit 排产任务池排产
     *
     * @param
     * @return java.lang.String
     * @author 徐一贺
     * @date 2021/1/15 13:31
     */
    @GetMapping("/scheduling/edit/{id}")
    @RequiresPermissions("pro:equipment:edit")
    public String schedulingEdit(@PathVariable("id") Integer id, Model model) {
        ProdOrdModel prodOrd = prodTaskService.getProdOrdByPrimaryKey(id);
        model.addAttribute("prodOrd", prodOrd);
        model.addAttribute("tableItem", prodTaskService.findTotalDispatchPlanItem());
        ProdPla prodPla = prodTaskService.getProdPlaByPropProdNo(prodOrd.getProdNo());
        if (prodPla != null) {
            List<ProdPlaDet> prodPlaDetList =
                    prodTaskService.findProdPlaDetListByPrpdPropId(prodPla.getPropId());
            model.addAttribute("prodPlaDetList", prodPlaDetList);
        }
        model.addAttribute("fou", ShiroUtils.getUser().getName());
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
        model.addAttribute("creDat", formatter.format(new Date()));
        model.addAttribute("deptList", prodTaskService.findDeptList());
        return "prodTaskManager/scheduling/edit/page";
    }

    /**
     * commonEdit 普通任务池排产
     *
     * @param id
     * @param model
     * @return java.lang.String
     * @author 徐一贺
     * @date 2021/1/29 16:44
     */
    @GetMapping("/common/edit/{id}")
    @RequiresPermissions("pro:other:edit")
    public String commonEdit(@PathVariable("id") Integer id, Model model) {
        ProdOrdModel prodOrd = prodTaskService.getProdOrdByPrimaryKey(id);
        model.addAttribute("prodOrd", prodOrd);
        model.addAttribute("fou", ShiroUtils.getUser().getName());
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
        model.addAttribute("creDat", formatter.format(new Date()));
        return "prodTaskManager/common/edit/page";
    }

    /**
     * schedulingChange 变更
     *
     * @param id
     * @param model
     * @return java.lang.String
     * @author 徐一贺
     * @date 2021/1/27 13:10
     */
    @GetMapping("/scheduling/change/{id}")
    @RequiresPermissions(value = {"pro:equipment:edit", "pro:other:edit"}, logical = Logical.OR)
    public String schedulingChange(@PathVariable("id") Integer id, Model model) {
        ProdOrdModel prodOrd = prodTaskService.getProdOrdByPrimaryKey(id);
        model.addAttribute("prodOrd", prodOrd);
        ProdPla prodPla = prodTaskService.getProdPlaByPropProdNo(prodOrd.getProdNo());
        if (prodPla != null) {
            List<ProdPlaDet> prodPlaDetList =
                    prodTaskService.findProdPlaDetListByPrpdPropId(prodPla.getPropId());
            List<BaseData> baseDataList = prodTaskService.findTotalDispatchPlanItem();
            if (prodOrd.getProdTyp() == 1) {
                for (int j = 0; j < baseDataList.size(); j++) {
                    boolean isExist = false;
                    for (int i = 0; i < prodPlaDetList.size(); i++) {
                        if (baseDataList.get(j).getBadaCod().equals(prodPlaDetList.get(i).getPrpdCod())) {
                            isExist = true;
                            break;
                        }
                    }
                    if (isExist == false) {
                        BaseData baseData = baseDataList.get(j);
                        ProdPlaDet newProdPlaDet = new ProdPlaDet();
                        newProdPlaDet.setPrpdPropId(prodPla.getPropId());
                        newProdPlaDet.setPrpdNam(baseData.getBadaNam());
                        newProdPlaDet.setPrpdCod(baseData.getBadaCod());
                        newProdPlaDet.setPrpdOrdNo(baseData.getBadaOrdNo());
                        prodPlaDetList.add(newProdPlaDet);
                    }
                }
            }
            model.addAttribute("prodPlaDetList", prodPlaDetList);
            model.addAttribute("baseDataList", baseDataList);
//            List<SysDeptModel> deptModelList = prodTaskService.findDeptList();
//            deptModelList.add(
//                    0,
//                    new SysDeptModel() {
//                        {
//                            setId(null);
//                            setName("");
//                        }
//                    });
//            model.addAttribute("deptList", deptModelList);
            String tableTitle = "";
            if (prodOrd.getProdTyp() == 1) {
                tableTitle = "设备类项目排产";
            } else {
                tableTitle = "其他类项目排产";
            }
            model.addAttribute("tableTitle", tableTitle);
        }
        if (prodOrd.getProdTyp() == 1) {
            return "prodTaskManager/scheduling/change/page";
        } else {
            return "prodTaskManager/common/change/page";
        }
    }

    /**
     * schedulingEdit 总调计划编辑
     *
     * @param
     * @return java.lang.String
     * @author 徐一贺
     * @date 2021/1/15 13:31
     */
    @GetMapping("/scheduling/see/{id}")
    @RequiresPermissions(
            value = {"pro:equipment:view", "pro:other:view", "pro:proPlanCheck:edit", "pro:proMinisterialPlanCheck:view","pro:masterPlan:view"},
            logical = Logical.OR)
    public String schedulingSee(@PathVariable("id") Integer id, Model model) {
        ProdOrdModel prodOrd = prodTaskService.getProdOrdByPrimaryKey(id);
        model.addAttribute("prodOrd", prodOrd);
        model.addAttribute("tableItem", prodTaskService.findTotalDispatchPlanItem());
        ProdPla prodPla = prodTaskService.getProdPlaByPropProdNo(prodOrd.getProdNo());
        if (prodPla != null) {
            List<ProdPlaDet> prodPlaDetList =
                    prodTaskService.findProdPlaDetListByPrpdPropId(prodPla.getPropId());
            model.addAttribute("prodPlaDetList", prodPlaDetList);
        }
//        List<SysDeptModel> deptModelList = prodTaskService.findDeptList();
//        deptModelList.add(
//                0,
//                new SysDeptModel() {
//                    {
//                        setId(null);
//                        setName("");
//                    }
//                });
//        model.addAttribute("deptList", deptModelList);
        String tableTitle = "";
        if (prodOrd.getProdTyp() == 1) {
            tableTitle = "设备类项目排产";
        } else {
            tableTitle = "其他类项目排产";
        }
        model.addAttribute("tableTitle", tableTitle);
        model.addAttribute("prodNo", prodOrd.getProdNo());
        return "prodTaskManager/scheduling/see/page";
    }

    /**
     * commonEdit 普通计划编辑
     *
     * @param
     * @return java.lang.String
     * @author 徐一贺
     * @date 2021/1/15 13:31
     */
    @GetMapping("/common/see/{id}")
    @RequiresPermissions(
            value = {"pro:equipment:view", "pro:other:view", "pro:proPlanCheck:edit","pro:masterPlan:view"},
            logical = Logical.OR)
    public String commonSee(@PathVariable("id") Integer id, Model model) {
        ProdOrdModel prodOrd = prodTaskService.getProdOrdByPrimaryKey(id);
        model.addAttribute("prodOrd", prodOrd);
        model.addAttribute("tableItem", prodTaskService.findTotalDispatchPlanItem());
        ProdPla prodPla = prodTaskService.getProdPlaByPropProdNo(prodOrd.getProdNo());
        if (prodPla != null) {
            List<ProdPlaDet> prodPlaDetList =
                    prodTaskService.findProdPlaDetListByPrpdPropId(prodPla.getPropId());
            model.addAttribute("prodPlaDetList", prodPlaDetList);
        }
//        List<SysDeptModel> deptModelList = prodTaskService.findDeptList();
//        deptModelList.add(
//                0,
//                new SysDeptModel() {
//                    {
//                        setId(null);
//                        setName("");
//                    }
//                });
//        model.addAttribute("deptList", deptModelList);
        String tableTitle = "";
        if (prodOrd.getProdTyp() == 1) {
            tableTitle = "设备类项目排产";
        } else {
            tableTitle = "其他类项目排产";
        }
        model.addAttribute("tableTitle", tableTitle);
        model.addAttribute("prodNo", prodOrd.getProdNo());
        return "prodTaskManager/common/see/page";
    }

    /**
     * schedulingEdit 总调计划编辑
     *
     * @param
     * @return java.lang.String
     * @author 徐一贺
     * @date 2021/1/15 13:31
     */
    @GetMapping("/scheduling/other/{id}/{mode}")
    @RequiresPermissions(value = {"pro:single:view", "pro:masterPlan:view"}, logical = Logical.OR)
    public String schedulingOther(
            @PathVariable("id") Integer id, @PathVariable("mode") String mode, Model model) {
        ProdOrdModel prodOrd = prodTaskService.getProdOrdByPrimaryKey(id);
        model.addAttribute("prodOrd", prodOrd);
        model.addAttribute("tableItem", prodTaskService.findTotalDispatchPlanItem());
        ProdPla prodPla = prodTaskService.getProdPlaByPropProdNo(prodOrd.getProdNo());
        if (prodPla != null && prodPla.getPropSta() == 5) {
            List<ProdPlaDet> prodPlaDetList =
                    prodTaskService.findProdPlaDetListByPrpdPropId(prodPla.getPropId());
            model.addAttribute("prodPlaDetList", prodPlaDetList);
        }
        List<SysDeptModel> deptModelList = prodTaskService.findDeptList();
        deptModelList.add(
                0,
                new SysDeptModel() {
                    {
                        setId(null);
                        setName("");
                    }
                });
        model.addAttribute("deptList", deptModelList);
        String tableTitle = "";
        if (prodOrd.getProdTyp() == 1) {
            tableTitle = "设备类项目排产";
        } else {
            tableTitle = "其他类项目排产";
        }
        model.addAttribute("tableTitle", tableTitle);
        if (mode.equals("other")) {
            model.addAttribute("mode", 1);
        }
        return "prodTaskManager/prodOrderQuery/singleOther/page";
    }

    /**
     * 检测是否排产
     * @param prodNo 生产令号
     * @return JsonResult
     * @author 徐一贺
     * @date 2021/1/16 12:41
     */
    @ResponseBody
    @PostMapping("/prodOrdQuery/singleCheckIsHaveDetail")
    public JsonResult checkIsHaveDetail(String prodNo) {
        //获取生产令
        ProdOrd prodOrd = prodTaskService.getProdOrdByPropProdNo(prodNo);
        //获取总调计划
        ProdPla prodPla = prodTaskService.getProdPlaByPropProdNo(prodOrd.getProdNo());
        //获取计划列表
        List<ProdPlaDet> prodPlaDetList = prodTaskService.findProdPlaDetListByPrpdPropId(prodPla.getPropId());
        if (prodOrd == null || prodPla == null || prodPlaDetList.size() == 0) {
            return error();
        }else{
            return success();
        }
    }

    /**
     * ProdOrdQuerySingle 跳转到设备类单生产令看板
     *
     * @param prodNo 生产令号
     * @param model
     * @return java.lang.String
     * @author 徐一贺
     * @date 2021/1/16 12:41
     */
    @GetMapping("/prodOrdQuery/single/{prodNo}")
    @RequiresPermissions(value = {"pro:single:view", "pro:masterPlan:view"}, logical = Logical.OR)
    public String prodOrdQuerySingle(@PathVariable("prodNo") String prodNo, Model model) {
        //获取并渲染页面需要的参数
        ProdOrd prodOrd = prodTaskService.getProdOrdByPropProdNo(prodNo);
        model.addAttribute("prodNo", prodOrd.getProdNo());
        model.addAttribute("proCode", prodOrd.getProdProCod());
        model.addAttribute("prodOrd", prodOrd);
        VwProject project = prodTaskService.getVwProjectByProCode(prodOrd.getProdProCod());
        model.addAttribute("project", project);
        Date cusDeliveryDate = prodOrd.getProdDelDat();
        model.addAttribute("cusDeliveryDate", cusDeliveryDate);
        //数据同步
        ProdPla prodPla = prodTaskService.getProdPlaByPropProdNo(prodOrd.getProdNo());
        if (prodPla != null) {
            //同步设计完成时间反馈
            ProdPlaRet designReturn = new ProdPlaRet();
            designReturn.setPrprPropId(prodPla.getPropId());
            designReturn.setPrprCod("r01");
            designReturn = prodTaskService.getProdPlaRetByPrprPropIdAndPrprCod(designReturn);
            if (designReturn != null) {
                designReturn.setPrprRetDat(prodTaskService.getDesignCompletionDtByProCode(prodOrd.getProdProCod()));
                prodTaskService.updateProdPlaRetPrprRetDatByPrimaryKey(designReturn);
            }
            //同步工艺完成时间反馈
            ProdPlaRet craftReturn = new ProdPlaRet();
            craftReturn.setPrprPropId(prodPla.getPropId());
            craftReturn.setPrprCod("r03");
            craftReturn = prodTaskService.getProdPlaRetByPrprPropIdAndPrprCod(craftReturn);
            if (craftReturn != null) {
                craftReturn.setPrprRetDat(prodTaskService.getCraftCompletionDtByProCode(prodOrd.getProdProCod()));
                prodTaskService.updateProdPlaRetPrprRetDatByPrimaryKey(craftReturn);
            }
            //同步原材料完成时间反馈
            ProdPlaRet rawMatReturn = new ProdPlaRet();
            rawMatReturn.setPrprPropId(prodPla.getPropId());
            rawMatReturn.setPrprCod("r04");
            rawMatReturn = prodTaskService.getProdPlaRetByPrprPropIdAndPrprCod(rawMatReturn);
            if (rawMatReturn != null) {
                rawMatReturn.setPrprRetDat(prodTaskService.getRawMatReturnCompletionDtByProCode(prodOrd.getProdProCod()));
                prodTaskService.updateProdPlaRetPrprRetDatByPrimaryKey(rawMatReturn);
            }
            //同步原材料完成时间反馈
            ProdPlaRet outsourcingReturn = new ProdPlaRet();
            outsourcingReturn.setPrprPropId(prodPla.getPropId());
            outsourcingReturn.setPrprCod("r05");
            outsourcingReturn = prodTaskService.getProdPlaRetByPrprPropIdAndPrprCod(outsourcingReturn);
            if (outsourcingReturn != null) {
                outsourcingReturn.setPrprRetDat(prodTaskService.getOutsourcingReturnReturnCompletionDtByProCode(prodOrd.getProdProCod()));
                prodTaskService.updateProdPlaRetPrprRetDatByPrimaryKey(outsourcingReturn);
            }
        }
        return "prodTaskManager/prodOrderQuery/single/page";
    }

    /**
     * prodOrdQuerySingleOther 跳转到其他类单生产令看板
     *
     * @param prodNo 生产令号
     * @param model
     * @return java.lang.String
     * @author 徐一贺
     * @date 2021/2/3 15:33
     */
    @GetMapping("/prodOrdQuery/singleOther/{prodNo}")
    @RequiresPermissions("pro:single:view")
    public String prodOrdQuerySingleOther(@PathVariable("prodNo") String prodNo, Model model) {
        ProdOrdModel prodOrd = prodTaskService.getProdOrdByPropProdNo(prodNo);
        model.addAttribute("prodOrd", prodOrd);
        model.addAttribute("taskList", prodTaskService.findProdFacListBy(prodNo));
        return "prodTaskManager/prodOrderQuery/singleOther/page";
    }


    /**
     * prodOrdQueryMultiple 跳转到生产进度看板
     *
     * @return java.lang.String
     * @author 徐一贺
     * @date 2021/2/2 13:50
     */
    @GetMapping("/prodOrdQuery/multiple")
    @RequiresPermissions("pro:proProgress:view")
    public String prodOrdQueryMultiple() {
        return "prodTaskManager/prodOrderQuery/multiple/page";
    }

    /**
     * ProdOrdQuerySingleForPlan 根据生产令查询排产计划列表、生产任务和计划反馈信息
     *
     * @param prodNo
     * @return com.zw.mes.common.JsonResult
     * @author 徐一贺
     * @date 2021/1/16 12:44
     */
    @ResponseBody
    @PostMapping("/prodOrdQuerySingle/planTaskAndRet")
    @RequiresPermissions("pro:single:view")
    public JsonResult prodOrdQuerySingleForPlanTaskAndRet(String prodNo) {
        Map<String, Object> map = new HashMap<>();
        map.put("planList", prodTaskService.findProdPlanListByProdNo(prodNo));
        map.put("taskTypeList", prodTaskService.findProdTaskTypeListByProdNo(prodNo));
        map.put("taskList", prodTaskService.findProdTaskListByProdNo(prodNo));
        map.put("retList", prodTaskService.findProdPlanRetInfoListByProdNo(prodNo));
        return success().setData(map);
    }

    /**
     * @methodName: getDesignStatus
     * @description: 获取设计状态
     * @param: prodNo
     * @return： com.zw.mes.common.JsonResult
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣，盖世奇
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/6 14:54
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/prodOrdQuerySingle/getDesignStatus")
    public JsonResult getDesignStatus(VwProject param) {
        VwProject vwProject = prodTaskService.getVwProjectByProCode(param.getProCode());
        VwProStatus vwProStatus = prodTaskService.getVwProStatusByProId(vwProject.getProId());
        if (vwProStatus != null) {
            return success().setData(vwProStatus.getDesignStatus());
        } else {
            return success().setData(1);
        }
    }

    /**
     * @methodName: getCraftStatus
     * @description: 获取工艺状态
     * @param: param
     * @return： com.zw.mes.common.JsonResult
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣，盖世奇
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/6 15:48
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/prodOrdQuerySingle/getCraftStatus")
    public JsonResult getCraftStatus(VwProject param) {
        VwProject vwProject = prodTaskService.getVwProjectByProCode(param.getProCode());
        VwCraTaskDetail vwCraTaskDetail = prodTaskService.getVwCraTaskDetailByProId(vwProject.getProId());
        if (vwCraTaskDetail != null) {
            return success().setData(vwCraTaskDetail.getCraftStatus());
        } else {
            return success().setData(1);
        }
    }

    /**
     * @methodName: getMaterialStatus
     * @description: 获取原材料状态
     * @param: param
     * @return： com.zw.mes.common.JsonResult
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣，盖世奇
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/6 16:02
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/prodOrdQuerySingle/getMaterialStatus")
    public JsonResult getMaterialStatus(VwProject param) {
        VwProject vwProject = prodTaskService.getVwProjectByProCode(param.getProCode());
        VwCraTaskDetail vwCraTaskDetail = prodTaskService.getVwCraTaskDetailByProId(vwProject.getProId());
        if (vwCraTaskDetail != null) {
            return success().setData(vwCraTaskDetail.getMaterialStatus());
        } else {
            return success().setData(1);
        }
    }

    /**
     * @methodName: getOutsourcingStatus
     * @description: 获取外协状态
     * @param: param
     * @return： com.zw.mes.common.JsonResult
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣，盖世奇
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/6 16:03
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/prodOrdQuerySingle/getOutsourcingStatus")
    public JsonResult getOutsourcingStatus(VwProject param) {
        VwProject vwProject = prodTaskService.getVwProjectByProCode(param.getProCode());
        VwCraTaskDetail vwCraTaskDetail = prodTaskService.getVwCraTaskDetailByProId(vwProject.getProId());
        if (vwCraTaskDetail != null) {
            return success().setData(vwCraTaskDetail.getOutsourcingStatus());
        } else {
            return success().setData(1);
        }
    }

    /**
     * schedulingSubmit 提交排产计划
     *
     * @param prodIdStr 生产令主键
     * @return com.zw.mes.common.JsonResult
     * @author 徐一贺
     * @date 2021/1/27 8:44
     */
    @ResponseBody
    @PostMapping("/scheduling/submit")
    @RequiresPermissions(
            value = {"pro:equipment:commit", "pro:other:edit"},
            logical = Logical.OR)
    public JsonResult schedulingSubmit(String prodIdStr) {
        String[] prodIdArr = prodIdStr.split(",");
        return prodTaskService.schedulingSubmit(prodIdArr);
    }

    /**
     * loadApplicantList 根据名字获取申请人姓名列表
     *
     * @param name 申请人名字
     * @return com.zw.mes.common.JsonResult
     * @author 徐一贺
     * @date 2021/1/27 9:40
     */
    @ResponseBody
    @PostMapping("/loadApplicantList")
    @RequiresPermissions("pro:proPlanCheck:view")
    public JsonResult loadApplicantList(String name) {
        return success().setData(prodTaskService.findApplicantList(name));
    }

    /**
     * loadAuditList 加载总调计划审核列表
     *
     * @param param 检索条件
     * @return com.zw.mes.common.JsonResult
     * @author 徐一贺
     * @date 2021/1/27 9:55
     */
    @ResponseBody
    @PostMapping("/audit/list")
    @RequiresPermissions("pro:proPlanCheck:view")
    public JsonResult loadAuditList(ProdPlaModel param) {
        startPage();
        return jsonResult(prodTaskService.findAuditList(param));
    }

    /**
     * @methodName: loadMinisterialAuditList
     * @description: 加载部级审核列表
     * @param: param
     * @return： com.zw.mes.common.JsonResult
     * @exception：
     * @author： 徐一贺
     * @date： 2021/3/23 16:06
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/audit/listMinisterial")
    @RequiresPermissions("pro:proMinisterialPlanCheck:view")
    public JsonResult loadMinisterialAuditList(ProdPlaModel param) {
        startPage();
        return jsonResult(prodTaskService.loadMinisterialAuditList(param));
    }

    /**
     * gotoAudit 跳转到审核页面
     *
     * @param prodId 生产令表主键
     * @return java.lang.String
     * @author 徐一贺
     * @date 2021/1/27 10:43
     */
    @GetMapping("/goto/audit/{prodId}")
    @RequiresPermissions("pro:proPlanCheck:edit")
    public String gotoAudit(@PathVariable("prodId") Integer prodId, Model model) {
        ProdOrdModel prodOrd = prodTaskService.getProdOrdByPrimaryKey(prodId);
        model.addAttribute("prodOrd", prodOrd);
        ProdPla prodPla = prodTaskService.getProdPlaByPropProdNo(prodOrd.getProdNo());
        model.addAttribute("prodPla", prodPla);
        if (prodPla != null) {
            List<ProdPlaDet> prodPlaDetList =
                    prodTaskService.findProdPlaDetListByPrpdPropId(prodPla.getPropId());
            model.addAttribute("prodPlaDetList", prodPlaDetList);
        }
        List<SysDeptModel> deptModelList = prodTaskService.findDeptList();
        deptModelList.add(
                0,
                new SysDeptModel() {
                    {
                        setId(null);
                        setName("");
                    }
                });
        model.addAttribute("deptList", deptModelList);
        if (prodPla.getPropIsCha() != null && prodPla.getPropIsCha() == 1) {
            return "prodTaskManager/audit/change/page";
        } else {
            return "prodTaskManager/audit/info/page";
        }
    }

    @GetMapping("/goto/auditMinisterial/{prodId}")
    @RequiresPermissions("pro:proMinisterialPlanCheck:view")
    public String gotoAuditMinisterial(@PathVariable("prodId") Integer prodId, Model model) {
        ProdOrdModel prodOrd = prodTaskService.getProdOrdByPrimaryKey(prodId);
        model.addAttribute("prodOrd", prodOrd);
        ProdPla prodPla = prodTaskService.getProdPlaByPropProdNo(prodOrd.getProdNo());
        model.addAttribute("prodPla", prodPla);
        if (prodPla != null) {
            List<ProdPlaDet> prodPlaDetList =
                    prodTaskService.findProdPlaDetListByPrpdPropId(prodPla.getPropId());
            model.addAttribute("prodPlaDetList", prodPlaDetList);
        }
        List<SysDeptModel> deptModelList = prodTaskService.findDeptList();
        deptModelList.add(
                0,
                new SysDeptModel() {
                    {
                        setId(null);
                        setName("");
                    }
                });
        model.addAttribute("deptList", deptModelList);
        if (prodPla.getPropIsCha() != null && prodPla.getPropIsCha() == 1) {
            return "prodTaskManager/ministerialAudit/change/page";
        } else {
            return "prodTaskManager/ministerialAudit/info/page";
        }
    }

    /**
     * auditReject 驳回
     *
     * @param prodPlaModel
     * @return com.zw.mes.common.JsonResult
     * @author 徐一贺
     * @date 2021/1/27 11:18
     */
    @ResponseBody
    @PostMapping("/audit/reject")
    @RequiresPermissions("pro:proPlanCheck:edit")
    public JsonResult auditReject(ProdPlaModel prodPlaModel) {
        return prodTaskService.auditReject(prodPlaModel);
    }

    /**
     * @methodName: ministerialAuditReject
     * @description: 驳回
     * @param: prodPlaModel
     * @return： com.zw.mes.common.JsonResult
     * @exception：
     * @author： 徐一贺
     * @date： 2021/3/23 16:42
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/ministerialAudit/reject")
    @RequiresPermissions("pro:proMinisterialPlanCheck:edit")
    public JsonResult ministerialAuditReject(ProdPlaModel prodPlaModel) {
        return prodTaskService.ministerialAuditReject(prodPlaModel);
    }

    /**
     * auditAgree 同意
     *
     * @param prodPlaModel
     * @return com.zw.mes.common.JsonResult
     * @author 徐一贺
     * @date 2021/1/27 12:30
     */
    @ResponseBody
    @PostMapping("/audit/agree")
    @RequiresPermissions("pro:proPlanCheck:edit")
    public JsonResult auditAgree(ProdPlaModel prodPlaModel) {
        return prodTaskService.auditAgree(prodPlaModel);
    }

    /**
     * @methodName: ministerialAuditAgree
     * @description: 部级审核通过
     * @param: prodPlaModel
     * @return： com.zw.mes.common.JsonResult
     * @exception：
     * @author： 徐一贺
     * @date： 2021/3/23 16:24
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/ministerialAudit/agree")
    @RequiresPermissions("pro:proMinisterialPlanCheck:edit")
    public JsonResult ministerialAuditAgree(ProdPlaModel prodPlaModel) {
        return prodTaskService.ministerialAuditAgree(prodPlaModel);
    }

    /**
     * planManagePage 跳转到计划信息管理页面
     *
     * @param
     * @return java.lang.String
     * @author 徐一贺
     * @date 2021/1/27 14:38
     */
    @GetMapping("/planManage")
    public String planManagePage(Model model) {
        // 获取总调计划类别列表
        model.addAttribute("planBadaTyp2List", prodTaskService.findPlanBadaTyp2List());
        return "baseManager/planManage/page";
    }

    /**
     * retManagePage 跳转到反馈信息管理页面
     *
     * @param model
     * @return java.lang.String
     * @author 徐一贺
     * @date 2021/1/27 16:25
     */
    @GetMapping("/retManage")
    public String retManagePage(Model model) {
        // 获取总调计划类别列表
        model.addAttribute("planBadaTyp2List", prodTaskService.findPlanBadaTyp2List());
        return "baseManager/retManage/page";
    }

    /**
     * basePlanList 总调计划基础信息维护列表
     *
     * @param
     * @return com.zw.mes.common.JsonResult
     * @author 徐一贺
     * @date 2021/1/27 14:43
     */
    @ResponseBody
    @PostMapping("/base/planList")
    public JsonResult basePlanList() {
        startPage();
        return jsonResult(prodTaskService.findBasePlanList());
    }

    /**
     * baseGetRetInf 根据主键获取反馈信息数据
     *
     * @param badaId 主键
     * @return com.zw.mes.common.JsonResult
     * @author 徐一贺
     * @date 2021/1/28 10:27
     */
    @ResponseBody
    @PostMapping("/base/getRetInf")
    public JsonResult baseGetRetInf(Integer badaId) {
        return success().setData(prodTaskService.baseGetRetInf(badaId));
    }

    /**
     * baseAddPlan 添加计划信息
     *
     * @param baseData 计划信息
     * @return com.zw.mes.common.JsonResult
     * @author 徐一贺
     * @date 2021/1/27 15:06
     */
    @ResponseBody
    @PostMapping("/base/addPla")
    public JsonResult baseAddPla(BaseData baseData) {
        return prodTaskService.baseAddPlan(baseData);
    }

    @ResponseBody
    /**
     * baseAddOrEditRet 添加或编辑反馈信息
     *
     * @param baseData 反馈信息
     * @return com.zw.mes.common.JsonResult
     * @author 徐一贺
     * @date 2021/1/28 10:58
     */
    @PostMapping("/base/addOrEditRet")
    public JsonResult baseAddOrEditRet(BaseData baseData) {
        return prodTaskService.baseAddOrEditRet(baseData);
    }

    /**
     * baseRemovePla 删除计划信息
     *
     * @param baseData
     * @return com.zw.mes.common.JsonResult
     * @author 徐一贺
     * @date 2021/1/27 15:56
     */
    @ResponseBody
    @PostMapping("/base/removePla")
    public JsonResult baseRemovePla(BaseData baseData) {
        return prodTaskService.baseRemovePla(baseData);
    }

    /**
     * baseRemoveRet 删除反馈信息
     *
     * @param baseData
     * @return com.zw.mes.common.JsonResult
     * @author 徐一贺
     * @date 2021/1/28 11:24
     */
    @ResponseBody
    @PostMapping("/base/removeRet")
    public JsonResult baseRemoveRet(BaseData baseData) {
        return prodTaskService.baseRemoveRet(baseData);
    }

    /**
     * changeQueryList 获取变更查询列表
     *
     * @param param 查询条件
     * @return com.zw.mes.common.JsonResult
     * @author 徐一贺
     * @date 2021/1/29 10:15
     */
    @ResponseBody
    @PostMapping("/changeQuery/list")
    @RequiresPermissions("pro:proPlanChange:view")
    public JsonResult changeQueryList(ProdPlaCha param) {
        startPage();
        return jsonResult(prodTaskService.findChangeQueryList(param));
    }

    /**
     * commonLoadPlanData 根据生产令编号获取计划数据
     *
     * @return com.zw.mes.common.JsonResult
     * @author 徐一贺
     * @date 2021/1/30 9:00
     */
    @ResponseBody
    @PostMapping("/common/loadPlanTemplateData")
    @RequiresPermissions(
            value = {"pro:single:view", "pro:other:edit"},
            logical = Logical.OR)
    public JsonResult commonLoadPlanTemplateData() {
        return success().setData(prodTaskService.findCommonLoadPlanTemplateData());
    }

    /**
     * @methodName: commonloadDeptLis
     * @description: 加载普通任务池编辑页面部门列表
     * @param:
     * @return： com.zw.mes.common.JsonResult
     * @exception：
     * @author： 徐一贺 tel:18941916590
     * @designer： 陈欣，盖世奇
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/3/26 10:42
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/common/loadDeptLis")
    @RequiresPermissions(
            value = {"pro:other:edit"},
            logical = Logical.OR)
    public JsonResult commonLoadDeptLis() {
        return success().setData(prodTaskService.findDeptList());
    }

    /**
     * commonLoadExistPlanData 根据生产令号获取计划列表
     *
     * @param prodOrdNo 生产令编号
     * @return com.zw.mes.common.JsonResult
     * @author 徐一贺
     * @date 2021/2/1 10:32
     */
    @ResponseBody
    @PostMapping("/common/loadExistPlanData")
    @RequiresPermissions(
            value = {"pro:single:view", "pro:other:edit"},
            logical = Logical.OR)
    public JsonResult commonLoadExistPlanData(String prodOrdNo) {
        return success().setData(prodTaskService.findCommonLoadExistPlanData(prodOrdNo));
    }

    /**
     * facPlaEdiAndRetList 根据搜索条件获取生产计划编辑与反馈页面的列表
     *
     * @param param 搜索条件
     * @return com.zw.mes.common.JsonResult
     * @author 徐一贺
     * @date 2021/2/1 14:25
     */
    @ResponseBody
    @PostMapping("/facPlaEdiAndRet/list")
    @RequiresPermissions("pro:productPlan:view")
    public JsonResult facPlaEdiAndRetList(ProdPlaDetModel param) {
        startPage();
        return jsonResult(prodTaskService.findFacPlaEdiAndRetList(param));
    }

    /**
     * saveEditRetSta 保存反馈编辑状态
     *
     * @param param 主键和反馈编辑状态
     * @return com.zw.mes.common.JsonResult
     * @author 徐一贺
     * @date 2021/2/1 15:36
     */
    @ResponseBody
    @PostMapping("/facPlaEdiAndRet/saveEditRetSta")
    @RequiresPermissions("pro:productPlan:feedback")
    public JsonResult saveEditRetSta(ProdPlaDetModel param) {
        return prodTaskService.saveEditRetSta(param);
    }

    /**
     * gotoFacPlaEdiAndRetAddPage 跳转到生产计划编辑的页面
     *
     * @param
     * @return java.lang.String
     * @author 徐一贺
     * @date 2021/2/1 16:00
     */
    @GetMapping("/facPlaEdiAndRet/add")
    @RequiresPermissions("pro:productPlan:edit")
    public String gotoFacPlaEdiAndRetAddPage() {
        return "prodTaskManager/factoryPlanEditAndReturn/edit/page";
    }

    /**
     * facPlaEdiAndRetSave facPlaEdiAndRetSave 保存生产计划编辑
     *
     * @param prodFacListJson 生产计划
     * @return com.zw.mes.common.JsonResult
     * @author 徐一贺
     * @date 2021/2/2 11:15
     */
    @ResponseBody
    @PostMapping("/facPlaEdiAndRet/save")
    @RequiresPermissions("pro:productPlan:edit")
    public JsonResult facPlaEdiAndRetSave(String prodFacListJson) {
        Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
        List<ProdFac> prodFacList =
                gson.fromJson(prodFacListJson, new TypeToken<List<ProdFac>>() {
                }.getType());
        return prodTaskService.facPlaEdiAndRetSave(prodFacList);
    }

    /**
     * removeDevicesClass 删除设备类的二级计划
     *
     * @param id 主键
     * @return com.zw.mes.common.JsonResult
     * @author 徐一贺
     * @date 2021/2/2 12:48
     */
    @ResponseBody
    @PostMapping("/facPlaEdiAndRet/removeDevicesClass")
    @RequiresPermissions("pro:productPlan:del")
    public JsonResult removeDevicesClass(Integer id) {
        return prodTaskService.removeDevicesClass(id);
    }

    /**
     * removeOtherClass 删除其他类的一级计划
     *
     * @param id 主键
     * @return com.zw.mes.common.JsonResult
     * @author 徐一贺
     * @date 2021/2/2 13:08
     */
    @ResponseBody
    @PostMapping("/facPlaEdiAndRet/removeOtherClass")
    @RequiresPermissions("pro:productPlan:del")
    public JsonResult removeOtherClass(Integer id) {
        return prodTaskService.removeOtherClass(id);
    }

    /**
     * prodOrdQueryList 根据条件查询生产进度看板列表
     *
     * @param param 检索条件
     * @return com.zw.mes.common.JsonResult
     * @author 徐一贺
     * @date 2021/2/2 15:04
     */
    @ResponseBody
    @PostMapping("/prodOrdQuery/list")
    @RequiresPermissions("pro:proProgress:view")
    public JsonResult prodOrdQueryList(ProdOrderQueryModel param) {
        startPage();
        return jsonResult(prodTaskService.findProdOrdQueryList(param));
    }

    /**
     * 单项目看板跳转到制作件清单查看页
     *
     * @param prodNo 生产令编号
     * @param model  渲染模型
     * @return 页面路径
     * @author 徐一贺
     * @date 2021/2/23 13:55
     */
    @GetMapping("/productionListview/{prodNo}")
    @RequiresPermissions("pro:single:view")
    public String productionListview(@PathVariable("prodNo") String prodNo, Model model) {
        ProdOrd prodOrd = prodTaskService.getProdOrdByPropProdNo(prodNo);
        VwProject project = prodTaskService.getVwProjectByProCode(prodOrd.getProdProCod());
        model.addAttribute("project", project);
        model.addAttribute("prodOrd", prodOrd);
        model.addAttribute("specialList", prodTaskService.getSpecialListByProCode(project.getProCode()));
        return "prodTaskManager/prodOrderQuery/single/productionListView/page";
    }

    /**
     * @methodName: productionListviewDetail
     * @description: 跳转到制作件清单明细页
     * @param: prodNo
     * @param: special
     * @param: part
     * @param: postName
     * @param: postDept
     * @param: model
     * @return： java.lang.String
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/5/12 14:03
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @GetMapping("/productionListView/detail/{proCode}/{special}/{part}/{postName}/{postDept}")
    @RequiresPermissions("pro:single:view")
    public String productionListviewDetail(@PathVariable("proCode") String proCode,
                                           @PathVariable("special") String special,
                                           @PathVariable("part") String part,
                                           @PathVariable("postName") String postName,
                                           @PathVariable("postDept") String postDept,
                                           Model model) {
        model.addAttribute("postName", postName);
        model.addAttribute("postDept", postDept);
        model.addAttribute("specials", prodTaskService.findDictByGroupName("专业类型"));
        VwProject project = prodTaskService.getVwProjectByProCode(proCode);
        model.addAttribute("proCode", project.getProCode());
        model.addAttribute("proName", project.getProName());
        model.addAttribute("proNum", project.getProQty());
        model.addAttribute("unit", project.getProUnit());
        model.addAttribute("proPart", part);
        model.addAttribute("special", special);
        return "prodTaskManager/prodOrderQuery/single/productionListView/detail/page";
    }

    /**
     * 跳转工艺卡查询页面
     */
    @GetMapping("/productionListView/selectCard/{id}")
    public String selectCard(@PathVariable("id") Integer id, Model model) {
        model.addAttribute("card", tecardService.getProdCardById(id));
        model.addAttribute("details", tecardService.findProdCardDetailByCardId(id));
        return "prodTaskManager/prodOrderQuery/single/processCardListView/prodCard";
    }

    /**
     * @methodName: makePage
     * @description: 制作件计划页面列表
     * @param: result
     * @return： com.zw.mes.common.JsonResult
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/5/12 14:36
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/designTask/process/makeResultList")
    @RequiresPermissions("pro:single:view")
    public JsonResult makePage(MakeResult result) {
        startPage();
        List<MakeResult> list = prodTaskService.findMakeResultByQuery(result);
        return jsonResult(list);
    }

    /**
     * @methodName: outPage
     * @description: 外购件输出表
     * @param: result
     * @return： com.zw.mes.common.JsonResult
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/5/12 14:49
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/designTask/process/outResultList")
    @RequiresPermissions("pro:single:view")
    public JsonResult designTaskProcessOutResultList(Result result) {
        startPage();
        List<Result> list = prodTaskService.findRepResultByQuery(result);
        return jsonResult(list);
    }

    @ResponseBody
    @PostMapping("/craft/proQuery/makeResultList")
    @RequiresPermissions("pro:single:view")
    public JsonResult outPage(Result result) {
        startPage();
        List<Result> list = prodTaskService.findRepResultByQuery(result);
        return jsonResult(list);
    }

    /**
     * 单项目看板跳转到外购件计划查看页
     *
     * @param prodNo 生产令编号
     * @param model  渲染模型
     * @return 页面路径
     * @author 徐一贺
     * @date 2021/2/23 13:55
     */
    @GetMapping("/purPlanListView/{prodNo}")
    @RequiresPermissions("pro:single:view")
    public String purPlanListView(@PathVariable("prodNo") String prodNo, Model model) {
        ProdOrd prodOrd = prodTaskService.getProdOrdByPropProdNo(prodNo);
        VwProject project = prodTaskService.getVwProjectByProCode(prodOrd.getProdProCod());
        model.addAttribute("project", project);
        model.addAttribute("prodOrd", prodOrd);
        model.addAttribute(
                "specialList", prodTaskService.getPurSpecialListByProCode(project.getProCode()));
        return "prodTaskManager/prodOrderQuery/single/purPlanListView/page";
    }

    /**
     * @methodName: purPlanListViewDetail
     * @description: 跳转到外购计划查看页面
     * @param: proCode
     * @param: special
     * @param: part
     * @param: model
     * @return： java.lang.String
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/5/12 14:47
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @GetMapping("/purPlanListView/detail/{proCode}/{malType}/{part}")
    @RequiresPermissions("pro:single:view")
    public String purPlanListViewDetail(@PathVariable("proCode") String proCode, @PathVariable("malType") String malType, @PathVariable("part") String part, Model model) {
        model.addAttribute("malTypes", prodTaskService.findDictByGroupName("专业类型"));
        VwProject project = prodTaskService.getVwProjectByProCode(proCode);
        model.addAttribute("proCode", project.getProCode());
        model.addAttribute("proName", project.getProName());
        model.addAttribute("proNum", project.getProQty());
        model.addAttribute("unit", project.getProUnit());
        model.addAttribute("proPart", part);
        model.addAttribute("malType", malType);
        return "prodTaskManager/prodOrderQuery/single/purPlanListView/detail/page";
    }

    /**
     * @methodName: rawMatPlanListViewDetail
     * @description: 跳转到原材料计划
     * @param: proCode
     * @param: special
     * @param: part
     * @param: model
     * @return： java.lang.String
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/5/12 15:27
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @GetMapping("/rawMatPlanListView/detail/{proCode}/{special}/{part}/{reportType}")
    @RequiresPermissions("pro:single:view")
    public String rawMatPlanListViewDetail(@PathVariable("proCode") String proCode, @PathVariable("special") String special, @PathVariable("part") String part, @PathVariable("reportType") Integer reportType, Model model) {
        model.addAttribute("malTypes", prodTaskService.findDictByGroupName("专业类型"));
        model.addAttribute("specials", prodTaskService.findDictByGroupName("专业类型"));
        VwProject project = prodTaskService.getVwProjectByProCode(proCode);
        model.addAttribute("proCode", project.getProCode());
        model.addAttribute("proName", project.getProName());
        model.addAttribute("proNum", project.getProQty());
        model.addAttribute("unit", project.getProUnit());
        model.addAttribute("proPart", part);
        model.addAttribute("special", special);
        model.addAttribute("reportType", reportType);
        if (reportType == 2) {
            model.addAttribute("reportTypeName", "外协件提报计划");
        }
        if (reportType == 3) {
            model.addAttribute("reportTypeName", "原材料提报计划");
        }
        return "prodTaskManager/prodOrderQuery/single/rawMatPlanListView/detail/page";
    }

    /**
     * 单项目看板跳转到原材料计划查看页
     *
     * @param prodNo 生产令编号
     * @param model  渲染模型
     * @return 页面路径
     * @author 徐一贺
     * @date 2021/2/23 13:55
     */
    @GetMapping("/rawMatPlanListView/{prodNo}")
    @RequiresPermissions("pro:single:view")
    public String rawMatPlanListView(@PathVariable("prodNo") String prodNo, Model model) {
        ProdOrd prodOrd = prodTaskService.getProdOrdByPropProdNo(prodNo);
        VwProject project = prodTaskService.getVwProjectByProCode(prodOrd.getProdProCod());
        model.addAttribute("project", project);
        model.addAttribute("prodOrd", prodOrd);
        model.addAttribute("specialList", prodTaskService.getRawMatSpecialListByProCode(project.getProCode()));
        return "prodTaskManager/prodOrderQuery/single/rawMatPlanListView/page";
    }

    /**
     * @methodName: rawMatUseStockListView
     * @description: 单项目看板跳转到原材料使用库存查看页
     * @param: prodNo
     * @param: model
     * @return： java.lang.String
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/5/8 9:53
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @GetMapping("/rawMatUseStockListView/{prodNo}")
    @RequiresPermissions("pro:single:view")
    public String rawMatUseStockListView(@PathVariable("prodNo") String prodNo, Model model) {
        ProdOrd prodOrd = prodTaskService.getProdOrdByPropProdNo(prodNo);
        VwProject project = prodTaskService.getVwProjectByProCode(prodOrd.getProdProCod());
        model.addAttribute("project", project);
        model.addAttribute("prodOrd", prodOrd);
        model.addAttribute("rppMalTypeList", prodTaskService.getRawMatRppMalTypeLis());
        return "prodTaskManager/prodOrderQuery/single/rawMatUseStockListView/page";
    }

    /**
     * @methodName: rawMatBuyListView
     * @description: 跳转到原材料采购查看
     * @param: prodNo
     * @param: model
     * @return： java.lang.String
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/5/8 14:24
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @GetMapping("/rawMatBuyListView/{prodNo}")
    @RequiresPermissions("pro:single:view")
    public String rawMatBuyListView(@PathVariable("prodNo") String prodNo, Model model) {
        ProdOrd prodOrd = prodTaskService.getProdOrdByPropProdNo(prodNo);
        VwProject project = prodTaskService.getVwProjectByProCode(prodOrd.getProdProCod());
        model.addAttribute("project", project);
        model.addAttribute("prodOrd", prodOrd);
        model.addAttribute("rppMalTypeList", prodTaskService.getRawMatRppMalTypeLis());
        return "prodTaskManager/prodOrderQuery/single/rawMatBuyListView/page";
    }

    /**
     * @methodName: outBuyListView
     * @description: 跳转到外协件采购查看
     * @param: prodNo
     * @param: model
     * @return： java.lang.String
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/5/8 14:57
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @GetMapping("/outBuyListView/{prodNo}")
    @RequiresPermissions("pro:single:view")
    public String outBuyListView(@PathVariable("prodNo") String prodNo, Model model) {
        ProdOrd prodOrd = prodTaskService.getProdOrdByPropProdNo(prodNo);
        VwProject project = prodTaskService.getVwProjectByProCode(prodOrd.getProdProCod());
        model.addAttribute("project", project);
        model.addAttribute("prodOrd", prodOrd);
        model.addAttribute("rppMalTypeList", prodTaskService.getRawMatRppMalTypeLis());
        return "prodTaskManager/prodOrderQuery/single/outBuyListView/page";
    }

    /**
     * @methodName: purBuyListView
     * @description: 跳转到外购件采购页面
     * @param: prodNo
     * @param: model
     * @return： java.lang.String
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/5/10 14:36
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @GetMapping("/purBuyListView/{prodNo}")
    @RequiresPermissions("pro:single:view")
    public String purBuyListView(@PathVariable("prodNo") String prodNo, Model model) {
        ProdOrd prodOrd = prodTaskService.getProdOrdByPropProdNo(prodNo);
        VwProject project = prodTaskService.getVwProjectByProCode(prodOrd.getProdProCod());
        model.addAttribute("project", project);
        model.addAttribute("prodOrd", prodOrd);
        model.addAttribute("rppMalTypeList", prodTaskService.getRawMatRppMalTypeLis());
        return "prodTaskManager/prodOrderQuery/single/purBuyListView/page";
    }

    /**
     * @methodName: outBuyListViewViewDetail
     * @description: 跳转到明细页
     * @param: prodNo
     * @param: model
     * @return： java.lang.String
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/5/8 16:45
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @GetMapping("/outBuyListView/viewDetail/{prodNo}")
    @RequiresPermissions("pro:single:view")
    public String outBuyListViewViewDetail(@PathVariable("prodNo") String prodNo, Model model) {
        ProdOrd prodOrd = prodTaskService.getProdOrdByPropProdNo(prodNo);
        VwProject project = prodTaskService.getVwProjectByProCode(prodOrd.getProdProCod());
        model.addAttribute("project", project);
        model.addAttribute("prodOrd", prodOrd);
        model.addAttribute("rppMalTypeList", prodTaskService.getRawMatRppMalTypeLis());
        return "prodTaskManager/prodOrderQuery/single/outBuyListView/detail/page";
    }

    /**
     * @methodName: purBuyListViewViewDetail
     * @description: 跳转到外购件查看页面
     * @param: prodNo
     * @param: model
     * @return： java.lang.String
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/5/10 14:40
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @GetMapping("/purBuyListView/viewDetail/{prodNo}")
    @RequiresPermissions("pro:single:view")
    public String purBuyListViewViewDetail(@PathVariable("prodNo") String prodNo, Model model) {
        ProdOrd prodOrd = prodTaskService.getProdOrdByPropProdNo(prodNo);
        VwProject project = prodTaskService.getVwProjectByProCode(prodOrd.getProdProCod());
        model.addAttribute("project", project);
        model.addAttribute("prodOrd", prodOrd);
        model.addAttribute("rppMalTypeList", prodTaskService.getRawMatRppMalTypeLis());
        return "prodTaskManager/prodOrderQuery/single/purBuyListView/detail/page";
    }

    /**
     * @methodName: outBuyListViewProjectInfolist
     * @description: 外协件采购主单查看
     * @param: prodNo
     * @return： com.zw.mes.common.JsonResult
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/5/8 15:29
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/outBuyListView/projectInfolist")
    @RequiresPermissions("pro:single:view")
    public JsonResult outBuyListViewProjectInfolist(String prodNo) {
        startPage();
        return jsonResult(prodTaskService.findOutBuyListViewProjectInfolist(prodNo));
    }

    /**
     * @methodName: purBuyListViewProjectInfolist
     * @description: 外购件采购主单查看
     * @param: prodNo
     * @return： com.zw.mes.common.JsonResult
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/5/10 14:38
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/purBuyListView/projectInfolist")
    @RequiresPermissions("pro:single:view")
    public JsonResult purBuyListViewProjectInfolist(String prodNo) {
        startPage();
        return jsonResult(prodTaskService.findPurBuyListViewProjectInfolist(prodNo));
    }

    /**
     * @methodName: outBuyListViewViewDetailList
     * @description: 获取外协件采购计划明细列表
     * @param: param
     * @return： com.zw.mes.common.JsonResult
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/5/8 16:54
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/outBuyListView/viewDetail/list")
    @RequiresPermissions("pro:single:view")
    public JsonResult outBuyListViewViewDetailList(RawMatUseStockListViewModel param) {
        startPage();
        return jsonResult(prodTaskService.findOutBuyListViewViewDetailList(param));
    }

    /**
     * @methodName: purBuyListViewViewDetailList
     * @description: 获取外购件采购计划明细列表
     * @param: param
     * @return： com.zw.mes.common.JsonResult
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/5/10 14:41
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/purBuyListView/viewDetail/list")
    @RequiresPermissions("pro:single:view")
    public JsonResult purBuyListViewViewDetailList(RawMatUseStockListViewModel param) {
        startPage();
        return jsonResult(prodTaskService.findPutBuyListViewViewDetailList(param));
    }

    /**
     * @methodName: rawMatUseStockList
     * @description: 单项目看板原材料使用库存列表
     * @param: param
     * @return： com.zw.mes.common.JsonResult
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/5/8 10:19
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/rawMatUseStockListView/list")
    @RequiresPermissions("pro:single:view")
    public JsonResult rawMatUseStockList(RawMatUseStockListViewModel param) {
        startPage();
        return jsonResult(prodTaskService.findRawMatUseStockList(param));
    }

    /**
     * @methodName: rawMatBuyListView
     * @description: 原材料采购进度列表
     * @param: param
     * @return： com.zw.mes.common.JsonResult
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/5/8 14:32
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/rawMatBuyListView/list")
    @RequiresPermissions("pro:single:view")
    public JsonResult rawMatBuyListView(RawMatUseStockListViewModel param) {
        startPage();
        return jsonResult(prodTaskService.findRawMatBuyListView(param));
    }

    /**
     * 单项目看板跳转到外协件计划查看页
     *
     * @param prodNo 生产令编号
     * @param model  渲染模型
     * @return 页面路径
     * @author 徐一贺
     * @date 2021/2/23 13:55
     */
    @GetMapping("/outPlanListView/{prodNo}")
    @RequiresPermissions("pro:single:view")
    public String outPlanListViewView(@PathVariable("prodNo") String prodNo, Model model) {
        ProdOrd prodOrd = prodTaskService.getProdOrdByPropProdNo(prodNo);
        VwProject project = prodTaskService.getVwProjectByProCode(prodOrd.getProdProCod());
        model.addAttribute("project", project);
        model.addAttribute("prodOrd", prodOrd);
        model.addAttribute(
                "specialList", prodTaskService.getOutSpecialListByProCode(project.getProCode()));
        return "prodTaskManager/prodOrderQuery/single/outPlanListView/page";
    }

    /**
     * 工艺卡列表查看页
     *
     * @param prodNo
     * @param model
     * @return
     * @author 徐一贺
     * @date 2021/2/24 16:06
     */
    @GetMapping("/processCardListView/{prodNo}")
    @RequiresPermissions("pro:single:view")
    public String processCardListView(@PathVariable("prodNo") String prodNo, Model model) {
        ProdOrd prodOrd = prodTaskService.getProdOrdByPropProdNo(prodNo);
        VwProject project = prodTaskService.getVwProjectByProCode(prodOrd.getProdProCod());
        model.addAttribute("project", project);
        model.addAttribute("prodOrd", prodOrd);
        model.addAttribute(
                "specialList", prodTaskService.getProcessCardSpecialListByProCode(project.getProCode()));
        return "prodTaskManager/prodOrderQuery/single/processCardListView/page";
    }

    /**
     * couTskView 下料任务查看页
     *
     * @param prodNo
     * @param model
     * @return
     * @author 徐一贺
     * @date 2021/2/25 10:57
     */
    @GetMapping("/cutTaskView/{prodNo}")
    @RequiresPermissions("pro:single:view")
    public String cutTaskView(@PathVariable("prodNo") String prodNo, Model model) {
        ProdOrd prodOrd = prodTaskService.getProdOrdByPropProdNo(prodNo);
        model.addAttribute("project", prodTaskService.getVwProjectByProCode(prodOrd.getProdProCod()));
        model.addAttribute("prodOrd", prodOrd);
        return "prodTaskManager/prodOrderQuery/single/cutTaskView/page";
    }

    /**
     * @methodName: productionSchedule
     * @description: 跳转到生产进度查看页
     * @param: prodNo
     * @param: model
     * @return： java.lang.String
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/5/6 14:45
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @GetMapping("/productionSchedule/{prodNo}")
    @RequiresPermissions("pro:single:view")
    public String productionSchedule(@PathVariable("prodNo") String prodNo, Model model) {
        ProdOrd prodOrd = prodTaskService.getProdOrdByPropProdNo(prodNo);
        model.addAttribute("project", prodTaskService.getVwProjectByProCode(prodOrd.getProdProCod()));
        model.addAttribute("prodOrd", prodOrd);
        model.addAttribute("specials", prodTaskService.findSpecialsByProdNo(prodNo));
        return "prodTaskManager/prodOrderQuery/single/productionSchedule/page";
    }

    /**
     * @methodName: halfStoreList
     * @description: 单项目看板跳转到半成品库虚拟页面
     * @param: prodNo
     * @param: model
     * @return： java.lang.String
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/5/8 8:11
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @GetMapping("/halfStoreList/{prodNo}")
    @RequiresPermissions("pro:single:view")
    public String halfStoreList(@PathVariable("prodNo") String prodNo, Model model) {
//        ProdOrd prodOrd = prodTaskService.getProdOrdByPropProdNo(prodNo);
//        model.addAttribute("project", prodTaskService.getVwProjectByProCode(prodOrd.getProdProCod()));
//        model.addAttribute("prodOrd", prodOrd);
        model.addAttribute("prodNo", prodNo);
        return "transposition/halfStore/page";
    }

    /**
     * @methodName: getTableColumn
     * @description: 获取列数据
     * @param: prodNo
     * @return： com.zw.mes.common.JsonResult
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/5/7 8:19
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/getTableColumn")
    @RequiresPermissions("pro:single:view")
    public JsonResult getTableColumn(String prodNo, String drawNo, String drawName, String part, String special) {
        return success().setData(prodTaskService.getTableColumn(prodNo, drawNo, drawName, part, special));
    }

    /**
     * @methodName: productionScheduleList
     * @description: 获得生产进度列表
     * @param: prodNo
     * @return： com.zw.mes.common.JsonResult
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/5/6 15:38
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/productionSchedule/list")
    @RequiresPermissions("pro:single:view")
    public JsonResult productionScheduleList(String prodNo, String drawNo, String drawName, String part, String special, Integer isComp) {
        return jsonResult(prodTaskService.findProductionScheduleList(prodNo, drawNo, drawName, part, special, isComp));
    }

    /**
     * assemblySheetListView 装配派工单查看页
     *
     * @param prodNo
     * @param model
     * @return
     * @author 徐一贺
     * @date 2021/2/25 10:57
     */
    @GetMapping("/assemblySheetListView/{prodNo}")
    @RequiresPermissions("pro:single:view")
    public String assemblySheetListView(@PathVariable("prodNo") String prodNo, Model model) {
        ProdOrd prodOrd = prodTaskService.getProdOrdByPropProdNo(prodNo);
        model.addAttribute("project", prodTaskService.getVwProjectByProCode(prodOrd.getProdProCod()));
        model.addAttribute("prodOrd", prodOrd);
        return "prodTaskManager/prodOrderQuery/single/assemblySheetListView/page";
    }

    /**
     * assemblySheetListView 装配进度查看页
     *
     * @param prodNo
     * @param model
     * @return
     * @author 徐一贺
     * @date 2021/2/25 10:57
     */
    @GetMapping("/assemblyListView/{prodNo}")
    @RequiresPermissions("pro:single:view")
    public String assemblyListView(@PathVariable("prodNo") String prodNo, Model model) {
        ProdOrd prodOrd = prodTaskService.getProdOrdByPropProdNo(prodNo);
        model.addAttribute("project", prodTaskService.getVwProjectByProCode(prodOrd.getProdProCod()));
        model.addAttribute("prodOrd", prodOrd);
        return "prodTaskManager/prodOrderQuery/single/assemblyListView/page";
    }

    /**
     * installListView 安装进度查看页
     *
     * @param prodNo
     * @param model
     * @return
     * @author 李青雨
     * @date 2021/2/27 10:07
     */
    @GetMapping("/installListView/{prodNo}")
//    @RequiresPermissions("pro:single:view")
    public String installListView(@PathVariable("prodNo") String prodNo, Model model) {
        ProdOrd prodOrd = prodTaskService.getProdOrdByPropProdNo(prodNo);
        model.addAttribute("project", prodTaskService.getVwProjectByProCode(prodOrd.getProdProCod()));
        model.addAttribute("prodOrd", prodOrd);
        return "prodTaskManager/prodOrderQuery/single/installListView/page";
    }

    /**
     * shipmentView 发货计划进度查看页
     *
     * @param prodNo
     * @param model
     * @return
     * @author 李青雨
     * @date 2021/2/27 10:07
     */
    @GetMapping("/shipmentPlanView/{prodNo}")
//    @RequiresPermissions("pro:single:view")
    public String shipmentView(@PathVariable("prodNo") String prodNo, Model model) {
        ProdOrd prodOrd = prodTaskService.getProdOrdByPropProdNo(prodNo);
        model.addAttribute("project", prodTaskService.getVwProjectByProCode(prodOrd.getProdProCod()));
        model.addAttribute("prodOrd", prodOrd);
        return "prodTaskManager/prodOrderQuery/single/shipmentView/page";
    }

    /**
     * dispatchingView 安装派工单进度查看页
     *
     * @param prodNo
     * @param model
     * @return
     * @author 李青雨
     * @date 2021/2/27 10:07
     */
    @GetMapping("/dispatchingView/{prodNo}")
//    @RequiresPermissions("pro:single:view")
    public String dispatchingView(@PathVariable("prodNo") String prodNo, Model model) {
        ProdOrd prodOrd = prodTaskService.getProdOrdByPropProdNo(prodNo);
        model.addAttribute("project", prodTaskService.getVwProjectByProCode(prodOrd.getProdProCod()));
        model.addAttribute("prodOrd", prodOrd);
        return "prodTaskManager/prodOrderQuery/single/dispatchingView/page";
    }

    /**
     * 获取制作件清单主单列表
     *
     * @param param
     * @return
     * @author 徐一贺
     * @date 2021/2/24 16:06
     */
    @ResponseBody
    @PostMapping("/productionListView/list")
    @RequiresPermissions("pro:single:view")
    public JsonResult productionListViewList(VwDsnMakeResultModel param) {
        startPage();
        return jsonResult(prodTaskService.findProductionListViewList(param));
    }

    /**
     * 获取外购件清单主单列表
     *
     * @param param
     * @return
     * @author 徐一贺
     * @date 2021/2/24 16:06
     */
    @ResponseBody
    @PostMapping("/purPlanListView/list")
    @RequiresPermissions("pro:single:view")
    public JsonResult purPlanListViewList(VwRepResultModel param) {
        startPage();
        return jsonResult(prodTaskService.findPurPlanListViewList(param));
    }

    /**
     * 获取原材料清单主单列表
     *
     * @param param
     * @return
     * @author 徐一贺
     * @date 2021/2/24 16:06
     */
    @ResponseBody
    @PostMapping("/rawMatPlanListView/list")
    @RequiresPermissions("pro:single:view")
    public JsonResult rawMatPlanListViewList(VwRepResultModel param) {
        startPage();
        return jsonResult(prodTaskService.findRawMatPlanListViewList(param));
    }

    /**
     * 获取外协件清单主单列表
     *
     * @param param
     * @return
     * @author 徐一贺
     * @date 2021/2/24 16:06
     */
    @ResponseBody
    @PostMapping("/outPlanListView/list")
    @RequiresPermissions("pro:single:view")
    public JsonResult outPlanListViewList(VwRepResultModel param) {
        startPage();
        return jsonResult(prodTaskService.findOutPlanListViewList(param));
    }

    /**
     * 获取工艺卡查看主单列表
     *
     * @param param
     * @return
     * @author 徐一贺
     * @date 2021/2/24 16:06
     */
    @ResponseBody
    @PostMapping("/processCardListView/list")
    @RequiresPermissions("pro:single:view")
    public JsonResult processCardListViewList(VwCraCardSheetModel param) {
        //startPage(); SQL不支持分页插件
        return jsonResult(prodTaskService.findProcessCardListViewList(param));
    }

    /**
     * 获取工艺卡零件级列表
     *
     * @param param
     * @return
     */
    @ResponseBody
    @PostMapping("/processPartsList/list")
    @RequiresPermissions("pro:single:view")
    public JsonResult processPartsList(VwCraCardSheetModel param) {
        startPage();
        return jsonResult(prodTaskService.findProcessPartsList(param));
    }

    /**
     * 下料任务查看
     *
     * @param param
     * @return
     */
    @ResponseBody
    @PostMapping("/cutTaskView/list")
    @RequiresPermissions("pro:single:view")
    public JsonResult cutTaskViewList(ProdCuttingDetailModel param) {
        startPage();
        return jsonResult(prodTaskService.cutTaskViewList(param));
    }

    /**
     * 装配派工单查看
     *
     * @param param
     * @return
     */
    @ResponseBody
    @PostMapping("/assemblySheetListView/list")
    @RequiresPermissions("pro:single:view")
    public JsonResult assemblySheetListViewList(AsseAssemblySheetModel param) {
        startPage();
        return jsonResult(prodTaskService.findAssemblySheetListViewList(param));
    }

    /**
     * 安装进度查看
     *
     * @param param
     * @return
     */
    @ResponseBody
    @PostMapping("/installListView/list")
    @RequiresPermissions("pro:single:view")
    public JsonResult installListViewList(InstDispatchingListModel param) {
        startPage();
        return jsonResult(prodTaskService.findInstallListViewList(param));
    }

    /**
     * 跳转到 工艺卡零件列表页
     *
     * @param model   页面渲染模型
     * @param proCode 项目编号
     * @param special 类型
     * @param part    部分
     * @return java.lang.String 页面路径
     * @author 徐一贺
     * @date 2021/2/24 16:06
     */
    @GetMapping("/processCardListView/gotoProcessPartsListPage/{proCode}/{special}/{part}")
    @RequiresPermissions("pro:single:view")
    public String gotoProcessPartsListPage(
            Model model,
            @PathVariable("proCode") String proCode,
            @PathVariable("special") String special,
            @PathVariable("part") String part) {
        model.addAttribute("proCode", proCode);
        model.addAttribute("special", special);
        model.addAttribute("part", part);
        model.addAttribute("project", prodTaskService.getVwProjectByProCode(proCode));
        return "prodTaskManager/prodOrderQuery/single/processCardListView/list/page";
    }

    /**
     * 跳转到总调计划查询
     *
     * @return
     */
    @GetMapping("/planQuery")
    @RequiresPermissions("pro:masterPlan:view")
    public String planQuery(Model model) {
        model.addAttribute("deptList",prodTaskService.findDeptListBySchedulingPlan());
        return "prodTaskManager/planQuery/page";
    }

    /**
     * 跳转到下料计划查询
     *
     * @return
     */
    @GetMapping("/blankingQuery")
    public String blankingQuery() {
        return "prodTaskManager/blankingQuery/page";
    }

    /**
     * 下料计划查询
     *
     * @return
     */
    @ResponseBody
    @PostMapping("/blankingQuery/list")
    public JsonResult blankingQuery(BlankingModel blankingModel) {
        startPage();
        return jsonResult(prodTaskService.findBlankingModelList(blankingModel));
    }

    /**
     * 跳转到铆焊计划查询
     *
     * @return
     */
    @GetMapping("/solderQuery")
    public String solderQuery() {
        return "prodTaskManager/solderQuery/page";
    }

    /**
     * 铆焊计划查询
     *
     * @return
     */
    @ResponseBody
    @PostMapping("/solderQuery/list")
    public JsonResult solderQuery(BlankingModel blankingModel) {
        startPage();
        return jsonResult(prodTaskService.findSolderModelList(blankingModel));
    }

    /**
     * 跳转到机加计划查询
     *
     * @return
     */
    @GetMapping("/machiningQuery")
    public String machiningQuery() {
        return "prodTaskManager/machiningQuery/page";
    }

    /**
     * 机加计划查询
     *
     * @return
     */
    @ResponseBody
    @PostMapping("/machiningQuery/list")
    public JsonResult machiningQuery(BlankingModel blankingModel) {
        startPage();
        return jsonResult(prodTaskService.findMachiningModelList(blankingModel));
    }

    /**
     * 根据条件获取总调计划查询列表
     *
     * @return
     */
    @ResponseBody
    @PostMapping("/planQuery/list")
    @RequiresPermissions("pro:masterPlan:view")
    public JsonResult planQueryList(PlanQueryModel param) {
        startPage();
        return jsonResult(prodTaskService.findPlanQueryList(param));
    }

    /**
     * 根据生产令编号获取对应的厂级计划列表
     *
     * @param profProdNo
     * @return
     */
    @ResponseBody
    @PostMapping("/getFactoryPlanEditAndReturnListByProfProdNo")
    @RequiresPermissions("pro:productPlan:view")
    public JsonResult getFactoryPlanEditAndReturnListByProfProdNo(String profProdNo) {
        return prodTaskService.getFactoryPlanEditAndReturnListByProfProdNo(profProdNo);
    }

    /**
     * 保存厂级计划编辑与反馈
     *
     * @param data
     * @return
     */
    @ResponseBody
    @PostMapping("/saveFactoryPlanEditAndReturnList")
    @RequiresPermissions("pro:productPlan:edit")
    public JsonResult saveFactoryPlanEditAndReturnList(String data) {
        return prodTaskService.saveFactoryPlanEditAndReturnList(data);
    }

    /**
     * 删除厂级计划编辑与反馈
     *
     * @param profId
     * @return
     */
    @ResponseBody
    @PostMapping("/removeFactoryPlanEditAndReturnListByProfId")
    @RequiresPermissions("pro:productPlan:edit")
    public JsonResult removeFactoryPlanEditAndReturnListByProfId(Integer profId) {
        return prodTaskService.removeFactoryPlanEditAndReturnListByProfId(profId);
    }


    /**
     * 生产进度看板列表 导出
     *
     * @param param 查询条件
     * @return list
     */
    @ResponseBody
    @GetMapping("/prodOrdQuery/exportExcelBySearch")
    @RequiresPermissions("pro:proProgress:export")
    public void exportExcel(HttpServletResponse response, ProdOrderQueryModel param) {
        prodTaskService.exportExcel(response, param);
    }

    /**
     * @methodName: getDeptList
     * @description: 获取部门列表
     * @param:
     * @return： com.zw.mes.common.JsonResult
     * @exception：
     * @author： 徐一贺
     * @date： 2021/3/26 9:02
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/scheduling/getDeptList")
    public JsonResult getDeptList() {
        List<SysDeptModel> deptModelList = prodTaskService.findDeptList();
        return success().setData(deptModelList);
    }
    /**
     * @methodName: getDeptList2
     * @description: 获取部门列表
     * @param:
     * @return： com.zw.mes.common.JsonResult
     * @exception：
     * @author： 徐一贺
     * @date： 2021/3/26 9:02
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/scheduling/getDeptList2")
    public JsonResult getDeptList2() {
        startPage();
        List<SysDeptModel> deptModelList = prodTaskService.findDeptListBySchedulingPlan();
        return jsonResult(deptModelList);
    }

    /**
     * @methodName: saveCommonPlanRet
     * @description: 保存普通计划反馈信息
     * @param: commonPlanRetJson
     * @return： com.zw.mes.common.JsonResult
     * @exception：
     * @author： 徐一贺
     * @date： 2021/3/26 9:03
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/saveCommonPlanRet")
    @RequiresPermissions("pro:otherRet:edit")
    public JsonResult saveCommonPlanRet(String commonPlanRetJson) {
        Gson gson = new Gson();
        List<ProdPlaDet> prodPlaDetList = gson.fromJson(commonPlanRetJson, new com.google.common.reflect.TypeToken<List<ProdPlaDet>>() {
        }.getType());
        return prodTaskService.saveCommonPlanRet(prodPlaDetList);
    }

    /**
     * @methodName: checkProdPlaExist
     * @description: 检测项目号下是否有计划
     * @param: prodNo
     * @return： com.zw.mes.common.JsonResult
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣，盖世奇
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/6 9:57
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/checkProdPlaExist")
    @RequiresPermissions("pro:retTask:edit")
    public JsonResult checkProdPlaExist(String prodNo) {
        ProdPla prodPla = prodTaskService.getProdPlaByPropProdNo(prodNo);
        if (prodPla != null && prodPla.getPropSta().intValue() == 5) {
            return success();
        } else {
            return error("该生产令未创建总调计划或未通过审核，请创建该项目的总调计划并通过审核！");
        }
    }

    /**
     * @methodName: taskEditList
     * @description: 根据总调计划表主键获取要编辑的任务列表
     * @param: protPropId
     * @return： com.zw.mes.common.JsonResult
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣，盖世奇
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/6 10:22
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/taskEditList")
    @RequiresPermissions("pro:retTask:edit")
    public JsonResult taskEditList(Integer protPropId) {
        startPage();
        return jsonResult(prodTaskService.findTaskEditList(protPropId));
    }

    /**
     * @methodName: returnEditList
     * @description: 根据总调计划表主键获取要编辑的反馈列表
     * @param: prprPropId
     * @return： com.zw.mes.common.JsonResult
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣，盖世奇
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/6 10:33
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/returnEditList")
    @RequiresPermissions("pro:retTask:edit")
    public JsonResult returnEditList(Integer prprPropId) {
        startPage();
        return jsonResult(prodTaskService.returnEditList(prprPropId));
    }

    /**
     * @methodName: saveTaskSta
     * @description: 保存任务状态
     * @param: prodTas
     * @return： com.zw.mes.common.JsonResult
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣，盖世奇
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/6 12:48
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/saveTaskSta")
    @RequiresPermissions("pro:retTask:edit")
    public JsonResult saveTaskSta(ProdTas prodTas) {
        return prodTaskService.saveTaskSta(prodTas);
    }

    /**
     * @methodName: saveReturn
     * @description: 保存反馈时间
     * @param: prodTas
     * @return： com.zw.mes.common.JsonResult
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣，盖世奇
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/6 13:50
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/saveReturn")
    @RequiresPermissions("pro:retTask:edit")
    public JsonResult saveReturn(ProdPlaRet prodPlaRet) {
        return prodTaskService.saveReturn(prodPlaRet);
    }

    /**
     * 查询任务状态
     *
     * @param proCode
     * @return
     */
    @ResponseBody
    @PostMapping("/selectProjectTask")
    @RequiresPermissions("pro:taskIsNeed:edit")
    public JsonResult selectProjectTask(@RequestParam("proCode") String proCode) {
        JsonResult jsonResult = new JsonResult();
        jsonResult.setType(JsonResult.ResultType.SUCCESS);
        VwProject project = prodTaskService.getVwProjectByProCode(proCode);
        jsonResult.setData(prodTaskService.selectProjectTask(project.getProId()));
        return jsonResult;
    }

    /**
     * @methodName: saveTaskStatus
     * @description: 保存工艺和调试的任务状态
     * @param: param
     * @return： com.zw.mes.common.JsonResult
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣，盖世奇
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/10 10:03
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/saveTaskStatus")
    @RequiresPermissions("pro:taskIsNeed:edit")
    public JsonResult saveTaskStatus(VwProStatus param) {
        VwProject project = prodTaskService.getVwProjectByProCode(param.getProCode());
        param.setProId(project.getProId());
        return prodTaskService.saveTaskStatus(param);
    }

    /**
     * @Author wsg
     * @Date 15:51 2021/5/24
     * @Description 装配进度查看 展示列
     **/
    @ResponseBody
    @PostMapping("/getAsseTableColumn")
    @RequiresPermissions("pro:single:view")
    public JsonResult getAsseTableColumn(String prodNo, String drawNo, String drawName, String part, String special) {
        return success().setData(prodTaskService.getAsseTableColumn(prodNo, drawNo, drawName, part, special));
    }

    /**
     * @Author wsg
     * @Date 16:27 2021/5/24
     * @Description 装配进度查看列表
     **/
    @ResponseBody
    @PostMapping("/assemblyListView/list")
    @RequiresPermissions("pro:single:view")
    public JsonResult assemblyListViewList(String prodNo, String drawNo, String drawName, String part, String special, Integer isComp) {
        startPage();
        return jsonResult(prodTaskService.findAssemblyScheduleList(prodNo, drawNo, drawName, part, special, isComp));
    }

    /**
     * @Author wsg
     * @Date 08:27 2021/6/2
     * @Description 成品库页面
     **/
    @GetMapping("/storeList/{prodNo}")
    @RequiresPermissions("pro:single:view")
    public String storeList(@PathVariable("prodNo") String prodNo, Model model) {
        model.addAttribute("prodNo", prodNo);
        return "assemble/sel/storePage";
    }


}
